SpringBoot

您所在的位置:网站首页 spring boot mongodb 多数据源 过期时间 SpringBoot

SpringBoot

2023-07-26 04:55| 来源: 网络整理| 查看: 265

好久没写日志了。主要也是没遇到啥想记录的。

这次想配置一个双数据源。 看了一圈百度。 看了一圈官方文档。 介绍也不全面。

磕磕绊绊。参考很多博客。以及看了看源码才弄了好。

秉承着前人摘树后人乘凉的原则。。。。算了 不比比了

直接贴代码。 一共就2步。直接搞定。 

帮助到你记得点个赞哦

步骤一:配置文件 

data: mongodb: master: host: 127.0.0.1 port: 27017 username: username password: pd database: db tx: host: 127.0.0.2 port: 27017 username: username password: pd database: db

 步骤二:设置配置类,这里需要注意一下。 自己的模式。我的第二个数据源是副本集模式。 如果是集群模式的话 换一下枚举即可

package com.fp.pileorder.config; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import com.mongodb.MongoClientSettings; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.connection.ClusterConnectionMode; import com.mongodb.connection.ClusterType; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.mongo.MongoProperties; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.SimpleMongoClientDbFactory; @Configuration public class MongodbConfiguration { @Primary @Bean(name = "mongoMasterProperties") @ConfigurationProperties(prefix = "spring.data.mongodb.master") public MongoProperties mongoMasterProperties () { return new MongoProperties(); } @Bean(name = "mongoTxProperties") @ConfigurationProperties(prefix = "spring.data.mongodb.tx") public MongoProperties mongoTxProperties () { return new MongoProperties(); } @Primary @Bean("mongoTemplate") public MongoTemplate mongoMasterTemplate (@Qualifier("mongoMasterProperties") MongoProperties mongoProperties) { return new MongoTemplate(mongoDbFactory(mongoProperties, false)); } @Bean("mongoTxTemplate") public MongoTemplate mongoTxTemplate (@Qualifier("mongoTxProperties") MongoProperties mongoProperties) { String host = mongoProperties.getHost(); String[] split = host.split(","); return new MongoTemplate(mongoDbFactory(mongoProperties, split.length > 1 ? true : false)); } public MongoDbFactory mongoDbFactory (MongoProperties mongoProperties, boolean isCluster) { ClusterConnectionMode clusterConnectionMode; ClusterType clusterType; List serverAddressList = new ArrayList(); //是否是集群模式 if (isCluster) { clusterConnectionMode = ClusterConnectionMode.MULTIPLE; clusterType = ClusterType.REPLICA_SET; String host = mongoProperties.getHost(); String[] split = host.split(","); for (String urlHost : split) { serverAddressList.add(new ServerAddress(urlHost, mongoProperties.getPort())); } } else { clusterConnectionMode = ClusterConnectionMode.SINGLE; clusterType = ClusterType.STANDALONE; ServerAddress serverAddress = new ServerAddress(mongoProperties.getHost(), mongoProperties.getPort()); serverAddressList.add(serverAddress); } MongoCredential credential = MongoCredential.createCredential(mongoProperties.getUsername(), mongoProperties.getDatabase(), mongoProperties.getPassword()); MongoClientSettings setting = MongoClientSettings.builder() .credential(credential) .applyToClusterSettings(builder -> builder.hosts(serverAddressList) .mode(clusterConnectionMode) .requiredClusterType(clusterType) ).build(); MongoClient mongoClient = MongoClients.create(setting); return new SimpleMongoClientDbFactory(mongoClient, mongoProperties.getDatabase()); } }

步骤三:直接使用 ,想在哪使用 注入进去就行了

@Resource @Qualifier("mongoTemplate") private MongoTemplate mongoTemplate; @Resource @Qualifier("mongoTxTemplate") private MongoTemplate mongoTxTemplate;



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3